//力扣202. 快乐数
//「快乐数」 定义为：
//https://leetcode.cn/problems/happy-number/description/?orderBy=most_votes&languageTags=c

//对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
//然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
//如果这个过程 结果为 1，那么这个数就是快乐数。
//如果 n 是 快乐数 就返回 true ；不是，则返回 false 。


//快慢指针


 int Getsum(int n)
{
    int sum = 0;
    while (n)
    {
        sum += pow(n % 10, 2);
        n /= 10;
    }
    return sum;
}

//快慢指针
bool isHappy(int n)
{
    int fastsum = 0;
    int slowsum = 0;
    slowsum = Getsum(n);
    fastsum = Getsum(slowsum);
    while (1)
    {
        if (fastsum == 1 )
        {
            return true;
        }
        else if (fastsum == slowsum)
        {
            return false;
        }
//	慢指针走一步，快指针走俩步
        slowsum = Getsum(slowsum);
        fastsum = Getsum(fastsum);
        fastsum = Getsum(fastsum);
    }
}